package com.lyf.scm.plan.insfrastructure.db.mapper;

import com.lyf.scm.plan.insfrastructure.db.dataobject.DirectlyExecuteDO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.SalesPlanSelectDO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.bigdata.DirectlyExecuteInDO;
import com.lyf.scm.plan.insfrastructure.db.dataobject.bigdata.DirectlyExecuteUpDO;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * description:
 * 直营预测计划--执行
 *
 * @author: haodong
 * @data: 2020/8/5 13:40
 */
public interface DirectlyExecuteMapper {


    /**
     * 按条件分页查询直营预测计划
     *
     * @param salesPlanSelect
     * @return
     */
    List<DirectlyExecuteDO> listByPage(SalesPlanSelectDO salesPlanSelect);

    /**
     * 按条件查询直营预测计划
     *
     * @param salesPlanDirectlyExecute
     * @return
     */
    List<DirectlyExecuteDO> listBySelective(DirectlyExecuteDO salesPlanDirectlyExecute);

    /**
     * 查询全部直营预测计划
     *
     * @param salesPlanSelect
     * @return
     */
    List<DirectlyExecuteDO> listAllByDays(SalesPlanSelectDO salesPlanSelect);

    /**
     * 批量新增
     *
     * @param directlyExecuteInDOs
     * @return void
     **/
    void batchInsert(List<DirectlyExecuteInDO> directlyExecuteInDOs);

    /**
     * 直营预测——执行 根据门店和日期获取所有需要更新的数据（默认为13天数据，今日起）
     *
     * @param storeCode
     * @param startDate
     * @param endDate
     * @return {@link List<DirectlyExecuteDO>}
     **/
    List<DirectlyExecuteUpDO> listUpByStoreAndDate(@Param("storeCode") String storeCode, @Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 删除当前日期之后的所有数据
     *
     * @param startDate
     * @return void
     **/
    void batchDeleteByStartDate(@Param("storeCode") String storeCode,@Param("startDate") Date startDate);

    /**
     * 删除对应标识的数据
     *
     * @param opSign
     */
    void delete(@Param("opSign") String opSign);

    void rmByIds(List<Long> ids);

    void upByIds(List<DirectlyExecuteUpDO> list);

    void deleteByOpSign(String opSign);
}
